// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/04/Mult.asm

// Multiplies R0 and R1 and stores the result in R2.
// (R0, R1, R2 refer to RAM[0], RAM[1], and RAM[2], respectively.)
//
// This program only needs to handle arguments that satisfy
// R0 >= 0, R1 >= 0, and R0*R1 < 32768.

// Put your code here.

@R1
D=M
@tar
M=D

@now
M=0

@sum
M=0

(LOOP)
    @now
    D=M
    @tar
    D=D-M
    
    @UNLOOP
    D;JGE

    @sum
    D=M
    @R0
    D=D+M
    @sum
    M=D

    @now
    M=M+1

    @LOOP
    0;JMP
(UNLOOP)

@sum
D=M
@R2
M=D